\chapter{Diagrammes de cas d'utilisation}
\label{chap:exig.nonfonc}
\minitoc

\section{Module Notification Board}

\begin{figure}
   \includegraphics[width=0.6\textwidth]{UML/board_uml1}
   \caption{\label{fig:notifBoard_uml} Diagramme de cas - Notification Board}
\end{figure}

\begin{figure}
   \includegraphics[width=0.6\textwidth]{UML/editor_uml}
   \caption{\label{fig:notifEditor_uml} Diagramme de cas - Notification Editor}
\end{figure}

Les activit\'es disponibles depuis l'interface Notification Board sont pr\'esente\'es dans 
la figure \ref{fig:notifBoard_uml} :
\begin{itemize}
 \item visualisation des notifications;
 \item filtrage des notifications selon des param\`etres sp\'ecifiques;
 \item acquittement des notifications;
 \item purge de toutes les notifications - \`a d\'efinir, non statu\'e.
\end{itemize}

\subsection{Visualisation des notifications}
Cette fonction a comme but d'afficher les notifications 
qui arrivent suite \`a une r\`egle activ\'ee par l'administrateur.
Les deux sources des notifications sont :
\begin{itemize}
 \item une base de donn\'ees o\`u elles sont persist\'ees par l'Event Switch;
 \item une file JMS o\`u elles sont aussi envoy\'ees par l'Event Switch (voir le document Conception Globale).
Dans le cas o\`u aucune notification ne se trouve dans la base de donn\'ees ou dans la file JMS,
l'interface montrera un tableau vide.
\end{itemize}

\vspace{2pt}
\textbf{Messages d'erreurs possibles :}
\begin{itemize}
\renewcommand{\labelitemi}{$\bullet$}
 \item ``Cannot retrieve notifications from the database.'' - pas de connection \`a la base de donn\'ees ou un autre
type de probl\`eme \`a l'heure de la connection. Dans ce cas, un pop-up est ouvert avec la trace d'exception correspondante
du cot\'e Java.
 \item ``Cannot retrieve notifications from the JMS topic.'' - pas de connection au topic ou d'autres probl\`emes 
\`a l'heure de la connection. Dans ce cas, un pop-up est ouvert avec la trace d'exception correspondante
du cot\'e Java.
 \end{itemize}

\subsection{Filtrage des notifications selon des param\`etres sp\'ecifiques}
Cette fonction a comme but de trier les notifications afin de faciliter la visualisation
des notifications dans le tableau. Apr\`es le filtrage, seulement les notifications qui 
correspondent au crit\`ere sont affich\'ees dans le tableau.
En cas de manque de notifications d'une telle cat\'egorie, le tableau sera vide.

\vspace{2pt}
\textbf{Messages d'erreurs possibles :} aucun.

\subsection{Acquittement des notifications}
Cette fonction a comme but de confirmer le fait que l'administrateur a vu et a pris en compte la notification
de l'\'ev\`enement qui est survenu dans le syst\`eme. Pour cela, un bouton d'acquittement est 
pr\'esent pour chaque notification, dans la derni\`ere colonne du tableau.
En cliquant sur le boutton, un pop-up est ouvert o\`u l'administrateur peut entrer les informations
qu'il souhaite. Apr\`es avoir acquitt\'e, la notification et le message d'acquittement sont 
persist\'es dans une table de la base de donn\`ees.

\vspace{2pt}
\textbf{Messages d'erreurs possibles :}
\begin{itemize}
\renewcommand{\labelitemi}{$\bullet$}
 \item ``Cannot acknowledge notification due to a database connection error.'' - pas de connection \`a la base de donn\'ees ou un autre
type de probl\`eme \`a l'heure de la connection. Dans ce cas, un pop-up est ouvert avec la trace d'exception correspondante
du cot\'e Java.
\end{itemize}

\subsection{Purge de toutes les notifications}
Cette fonction a pour but de vider le tableau de notification. Elle ne r\'eagit pas sur la base de donn\'ees.
La fonction n'est pas encore statu\'ee.


\vspace{2pt}
\textbf{Messages d'erreurs possibles :} aucun.


%-------------------------------------%

\section{Module Notification Editor}

Les activit\'es disponibles depuis l'interface Notification Editor sont pr\'esente\'es dans 
la figure \ref{fig:notifEditor_uml} :

\begin{itemize}
 \item cr\'eation des notifications;
 \item assignation des popri\'et\'es des notifications;
 \item sauvegarde de la d\'efinition des notifications;
 \item activation des notifications;
 \item d\'esactivation des notifications.
\end{itemize}

\subsection{Cr\'eation de la notification}
Cette fonction a comme but la cr\'eation d'une nouvelle r\`egle de notification avec l'aide de l'\'editeur.
Elle ouvre une nouvelle fen\^etre (onglet) dans l'\'editeur. Les champs des propri\'et\'es de la notification
sont vides pour le moment.

\vspace{2pt}
\textbf{Messages d'erreurs possibles :} aucun.

\subsection{Assignation des propri\'et\'es de la notification}
Avec cette fonction, l'administrateur saisit les propri\'et\'es de la notification (son nom, la description
de la notification qui repr\'esente dans Notification Board et aussi le message de la notification).

\vspace{2pt}
\textbf{Messages d'erreurs possibles :} aucun.

\subsection{Cr\'eation de la r\`egle de notification - partie WHEN}
La prochaine \'etape dans la cr\'eation de la notification est d'\'etablir l'ensemble des
conditions qui d\'eclenchent la notification. L'administrateur peut ajouter une condition simple
ou un bloc de conditions. Le bloc de conditions peut \^etre repr\'esent\'e comme
une paranth\`ese dans l'expression alg\'ebrique de l'ensemble des conditions.
L'administrateur peut aussi changer l'operateur alg\'ebrique (AND ou OR) entre
les conditions.

\vspace{2pt}
\textbf{Messages d'erreurs possibles :}
\begin{itemize}
\renewcommand{\labelitemi}{$\bullet$}
 \item ``Warning: a large number of conditions could lead to an 
incomprehensible notification rule!'' - 
le nombre de conditions dans l'ensemble de conditions est plus grand que 10 ou
le niveau d'imbrication est plus grand que 3 (exemple :
\begin{verbatim}
A AND B AND (C OR (D AND (E OR F)))
\end{verbatim} 
, o\`u \verb| A, B, C, D, E, F| sont des conditions, \verb|E OR F| est un bloc de conditions, \verb|D AND (E OR F)| est un autre bloc etc.).
\end{itemize}

\subsection{Choix de l'action de la notification - partie THEN}
Une fois l'ensemble de conditions \'etabli, l'administrateur doit choisir l'action
parmi les possibilit\'es suivantes :
\begin{itemize}
 \item l'envoie d'un  mail;
 \item l'affichage sur la console;
 \item l'envoie d'une trap SNMP - fonction \`a d\'efinir.
\end{itemize}
Des actions qui s'executent toujours sont l'envoi d'un message dans un topic JMS et la
pesistence de la notification dans la base de donn\'ees.

\vspace{2pt}
\textbf{Messages d'erreurs possibles :}
aucun


\subsection{Sauvegarde de la d\'efinition de la notification}
Apr\`es avoir d\'efini tous les param\`etres de la nouvelle notification, 
sa d\'efinition sera sauvegard\'e (bouton de sauvegarde) dans une base de donn\`ees.
Une condition que la d\'efinition de la notification soit sauvegard\'ee est que son
code source soit compil\'e avant. Si le code source contient une erreur, l'utilisateur
sera averti.

\vspace{2pt}
\textbf{Messages d'erreurs possibles :}
\begin{itemize}
\renewcommand{\labelitemi}{$\bullet$}
 \item[``Cannot persist notification definition in the database due to database problem.''] - pas de connection \`a la base de donn\'ees ou un autre
type de probl\`eme \`a l'heure de la connection. Dans ce cas, un pop-up est ouvert avec la trace d'exception correspondante
du cot\'e Java.
 \item[``Cannot persist notification definition in the database due to compilation error.''] - la source contient une erreur de 
syntaxe.
\end{itemize}

\subsection{Activation et d\'esactivation de la notification}
Dans la partie gauche de l'interface, les notifications peuvent \^etre activ\'ees ou
d\'esactiv\'ees avec un boutton (Activate/Deactivate).

\vspace{2pt}
\textbf{Messages d'erreurs possibles :}
\begin{itemize}
\renewcommand{\labelitemi}{$\bullet$}
 \item[``The source was not compiled yet. Please compile the source, save and then activate it.''] - la source 
n'a pas \'et\'e compil\'ee avant qu'elle soit activ\'ee. L'utilisateur devra compiler, sauvegarder et activer sa r\`egle.
\end{itemize}
%end Diagrammes_cas.tex